package com.wrk._3_方法._02_习题;

import java.security.SecureRandom;
import java.util.Random;

public class _005_开发验证码 {
    public static void main(String[] args) {
        //生成随机字母
        String Letters = randomLetters(4);
        //生成随机数
        int randomNumber = new Random().nextInt(9);
        System.out.println("5位数验证码:"+Letters+randomNumber);
    }
    //1、生成4位随机字母
    //2、生成1位随机数
    //拼接成5位验证码
    /*public static String randomLetters(int length){
        //创建随机函数
        Random random = new Random();
        //创建StringBuilder类，拼接字符串
        StringBuilder sb = new StringBuilder();
        //循环length次
        for (int i = 0; i < length; i++) {
            //随机生成 true 或 false
            boolean isUpper = random.nextBoolean();
            //三元条件运算符写法，条件 ? 表达式1 : 表达式2，如果条件为 `true`，执行 `表达式1`；否则执行 `表达式2`，概率各占 50%
            char c = isUpper ?
                    (char) (random.nextInt(26) + 'A') :
                    (char) (random.nextInt(26) + 'a');
            //创建StringBuilder类用法，sb.append追加内容
            sb.append(c);
        }
        //结果由StringBuilder类型转换成String类型
        return sb.toString();
    }*/
    /**@生成随机字母*/
    public static String randomLetters(int length){
        //创建随机函数
        SecureRandom secureRandom = new SecureRandom();
        Random random = new Random();
        //创建拼接字符串类
        StringBuilder sb1 = new StringBuilder();
        //循环length次
        for (int i = 0; i < length; i++) {
            //随机生成 true 或 false,用于控制字母大小写概率
            boolean isUpper = random.nextBoolean();
            //三元条件运算符写法
            char a = isUpper ?
                    (char) (secureRandom.nextInt(26) + 'A'):
                    (char) (secureRandom.nextInt(26) + 'a');
            sb1.append(a);
        }
        //结果由StringBuilder类型转换成String类型
        return sb1.toString();
    }
}
